package org.dromara.web.controller;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;

/**
 * @author ZhouWenTao
 * @create 2025-07-18 17:57
 */
public class test {
    public static void main(String[] args) {
        double ss = 8.0;
        // 扣费频率
        List<Double> list = List.of(1.0, 2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0);
// 循环小时价格
        for (int i = 5; i < 200; i++){
            // System.out.println("小时价格: " + i + " 元");
            // 输出该价格每个频率每次扣费多少
            for (Double frequency : list) {
                double fee = new BigDecimal(i).divide(new BigDecimal(frequency), 6, RoundingMode.HALF_UP).doubleValue();
                String feeStr = String.format("%.6f", fee);
                // 去掉末尾的0
                feeStr = feeStr.replaceAll("0*$", "").replaceAll("\\.$", "");
                // 计算小数点后位数
                int decimalPlaces = feeStr.contains(".") ? feeStr.split("\\.")[1].length() : 0;
                if (decimalPlaces < 3) {
                    System.out.printf("小时价格: %d 元, 频率 %.1f 小时/次, 每次扣费: %s 元, 小数位数: %d%n",
                        i, frequency, feeStr, decimalPlaces);
                }
            }
        }


    }
//    public static void main(String[] args) {
//        // 参数
//        // (10 * 7) / 60 = 1.166667
//        // (60 * 7) / 60 = 7
//        long baseRate = 7; // 7元/小时=700分/小时
//        long timeFlowRate = 3600; // 保持1小时基准（即使测试也勿改）
//        double secondsElapsed = 360; // 模拟10秒
//        double discountRateDouble = 0.73;
//        BigDecimal cost = new BigDecimal(secondsElapsed)
//            .multiply(new BigDecimal(baseRate))
//            .divide(new BigDecimal(timeFlowRate), 3, RoundingMode.HALF_UP);
//        System.out.println("10秒扣费: " + cost + "元"); // 输出: 1.94分
//        System.out.println("乘6次后" + cost.multiply(new BigDecimal(10)) + "元");
//        //结果
//        // 10秒扣费: 116.67分
//        // 乘6次后700.02分
//        for (int i = 1; i < 100; i++){
//            System.out.println(String.format("第%d次: %d元, 折扣后：%f元", i, ((i) / 10),((i) / 10 * discountRateDouble)));
//        }
//        BigDecimal multiply = new BigDecimal(0.7).multiply(new BigDecimal(0.75));
//        multiply = multiply.divide(new BigDecimal(1), 3, RoundingMode.HALF_UP);
//        System.out.println(multiply.doubleValue());
//
//        BigDecimal multiply2 = new BigDecimal(0.7).multiply(new BigDecimal(75));
//        multiply2 = multiply2.divide(new BigDecimal(1), 2, RoundingMode.HALF_UP);
//        System.out.println(multiply2.doubleValue());
//        System.out.println(70 * 75);
//        System.out.println(700 * 74 / 10);
//
//        BigDecimal multiply1 = new BigDecimal("0.7").multiply(new BigDecimal("0.74"));
//        // 7 = 700
//        // 7.5 = 750
//        // 0.7 = 70
//        System.out.println(checkRateAmount(70, 75));
//    }

    public static long checkRateAmount(long amount, long discount){
        // 向上取整（平台多赚1分）
        long finalPrice = (amount * discount + 99) / 100;
        return finalPrice;
        // 浮动，5舍6入
        /*long rawValue = amount * discount;  // 70*75=5250
        long remainder = rawValue % 100;   // 5250%100=50（判断是否正好0.5）
        long finalPrice;
        if (remainder == 50) {
            // 0.5分时向最近的偶数舍入
            finalPrice = (rawValue / 100) + ((rawValue / 100) % 2 == 1 ? 1 : 0);
        } else {
            // 否则标准四舍五入
            finalPrice = (rawValue + 50) / 100;
        }
        return finalPrice;*/
    }
}
